package com.bjpowernode.javase.collection;

import java.util.*;

/*
Map集合遍历
 */
public class MapTest02 {
    public static void main(String[] args) {
        //第一种方式:获取所有的key，通过遍历key，来遍历value
        Map<Integer,String> map = new HashMap<>();
        map.put(1,"zhangsan");
        map.put(2,"lisi");
        map.put(3,"wangwu");
        map.put(4,"zhaoliu");
        //遍历map集合
        //获取所有的key
        Set<Integer> keys = map.keySet();
        //遍历key，通过key获取value

        //迭代器
        Iterator<Integer> it = keys.iterator();
        while(it.hasNext()){
            //取出其中一个key
            Integer key = it.next();
            //通过key获取value
            String value = map.get(key);
            System.out.println(key + "=" + value);
        }

        //foreach
        for(Integer key: keys){
            System.out.println(key + "=" + map.get(key));
        }

        //第二种方式：Set<Map.Entry<K,v>> entrySet()
        //这种方式的效率较高，因为获取key和value都是直接从node对象中获取属性值
        //这种方式比较适合大数据量。
        //以上这种方式是把Map集合直接转换成Set集合
        // Set集合中元素的类型是map.Entry<K,V>
        Set<Map.Entry<Integer,String >> set = map.entrySet();
        //遍历Set集合，每一次取出一个Node

        //迭代器
        Iterator<Map.Entry<Integer,String>> it1 = set.iterator();
        while(it1.hasNext()){
            Map.Entry<Integer,String> node = it1.next();
            Integer key = node.getKey();
            String value = node.getValue();
            System.out.println(key + "=" + value);
        }

        //for each
        for(Map.Entry<Integer,String> node : set){
            System.out.println(node.getKey() + "=" + node.getValue());
        }

    }
}
